package com.itheima.demo6proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyDemo {
    //创建一个明星代理对象返回
    public static ServiceStar getProxy(Star s){
    //参数1：：类加载器
        //参数2：需要代理的类对象
        //参数3：用于指定代理类要如何去代理
        return (ServiceStar) Proxy.newProxyInstance(s.getClass().getClassLoader(),
                s.getClass().getInterfaces(), new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        //参数1：代理对象
                        //参数2：代理对象要调用的方法
                        //参数3：代理对象要调用的方法的参数
                        String name = method.getName();
                        if (name.equals("sing")) {
                            System.out.println("准备话筒 收20w");
                        } else if (name.equals("dance")) {
                            System.out.println("准备场地 收100w");
                        }
                        Object invoke = method.invoke(s, args);
                        return invoke;
                    }
                });
    }
}
